home *** CD-ROM | disk | FTP | other *** search
/ Oh!X 2001 Spring / Oh!X 2001 Spring Special CD-ROM (Japan).7z / Oh!X 2001 Spring Special CD-ROM (Japan) (Track 1).bin / JAVA / spman040 / scroll.java < prev    next >
Text File  |  1997-02-12  |  3KB  |  142 lines

  1. import java.applet.Applet;
  2. import java.awt.*;
  3.  
  4. public class scroll extends Applet implements Runnable {
  5.     SpriteControl sc;
  6.     MediaTracker mt;
  7.     Thread thread=null;
  8.     int scr1, scr2;
  9.     int chr=0;
  10.     int bgwidth[] = { 160, 180 };
  11.     int bgheight[] = { 120, 120 };
  12.     int bgnum[] = { 14, 24 };
  13.     public void init(){
  14.         Image image;
  15.         resize( 160, 120 );
  16.         sc = new SpriteControl();
  17.         // パターン数 キャラクタ2個 太い柱1個 細い柱1個
  18.         // プレーン数 キャラクタ1枚
  19.         sc.Create( 4, 1, 160, 120, this );
  20.         mt = new MediaTracker( this );
  21.         // キャラクタイメージ
  22.         image = getImage( getDocumentBase(), "scroll/chr1.gif" );
  23.         mt.addImage( image, 0 );
  24.         sc.Define( 0, image );
  25.         image = getImage( getDocumentBase(), "scroll/chr2.gif" );
  26.         mt.addImage( image, 0 );
  27.         sc.Define( 1, image );
  28.         // 太い柱イメージ
  29.         image = getImage( getDocumentBase(), "scroll/thick.gif" );
  30.         mt.addImage( image, 0 );
  31.         sc.Define( 2, image );
  32.         // 細い柱イメージ
  33.         image = getImage( getDocumentBase(), "scroll/thin.gif" );
  34.         mt.addImage( image, 0 );
  35.         sc.Define( 3, image );
  36.         // 背景イメージ
  37.         image = getImage( getDocumentBase(), "scroll/back.gif" );
  38.         mt.addImage( image, 0 );
  39.         sc.SetBGImage( image );
  40.         int x, y, i=0;
  41.         // バックグラウンド作成 太い柱14枚 細い柱24枚
  42.         sc.CreateBackground( 2, bgwidth, bgheight, bgnum );
  43.         // 太い柱のパターンをバックグラウンドに設定
  44.         // 柱の間隔80
  45.         for( y=0; y<7; y++ ){
  46.             for( x=0; x<2; x++ ){
  47.                 sc.SetBGPattern( 0, x+y*2, x*80, y*16, 2 );
  48.             }
  49.         }
  50.         i++;
  51.         // 細い柱のパターンをバックグラウンドに設定
  52.         // 柱の間隔60
  53.         for( y=0; y<8; y++ ){
  54.             for( x=0; x<3; x++ ){
  55.                 sc.SetBGPattern( 1, x+y*3, x*60, y*12, 3 );
  56.             }
  57.         }
  58.         sc.Show();
  59.         sc.BGShow();
  60.         // バックグラウンドプレーン0を最前面に表示
  61.         sc.SetBGPriority( 0, 0 );
  62.         scr1 = 72;
  63.         scr2 = 44;
  64.     }
  65.     public void update( Graphics g ){
  66.         paint( g );
  67.     }
  68.     public void paint( Graphics g ){
  69.         if( mt.checkID( 0 ) ){
  70.             sc.Display( g, 0, 0, this );
  71.         } else {
  72.             g.drawString( "Loading...", 0, 12 );
  73.         }
  74.     }
  75.     public void start(){
  76.         if( thread==null ){
  77.             thread = new Thread( this );
  78.             thread.start();
  79.         }
  80.     }
  81.     public void stop(){
  82.         if( thread!=null ){
  83.             thread.stop();
  84.             thread = null;
  85.         }
  86.     }
  87.     public void run(){
  88.         try {
  89.             mt.waitForID( 0 );
  90.         } catch( InterruptedException e ){
  91.             return;
  92.         }
  93.         while( true ){
  94.             try {
  95.                 Thread.sleep( 100 );
  96.             } catch( InterruptedException e ){
  97.                 break;
  98.             }
  99.             ScrollThick();
  100.             MoveChar( 0 );
  101.             ScrollThin();
  102.             repaint();
  103.         }
  104.     }
  105.     int MoveChar( int i ){
  106.         int x, y, no = 0;
  107.         // キャラクタアニメーション
  108.         chr++;
  109.         if( chr>=4 ) chr = 0;
  110.         x = (160-32)/2;
  111.         y = 73;
  112.         switch( chr ){
  113.         case 0:    no = 0;
  114.                 break;
  115.         case 1:    x += 4;
  116.                 no = 0;
  117.                 break;
  118.         case 2:    y -= 4;
  119.                 no = 1;
  120.                 break;
  121.         case 3:    x -= 4;
  122.                 no = 1;
  123.         }
  124.         sc.Move( i++, x, y, no );
  125.         return i;
  126.     }
  127.     void ScrollThick(){
  128.         // 太い柱オフセット値加算
  129.         scr1 += 4;
  130.         if( scr1>=160 ) scr1 -= 80*2;
  131.         // 太い柱スクロール
  132.         sc.BGScroll( 0, scr1, 0 );
  133.     }
  134.     void ScrollThin(){
  135.         // 細い柱オフセット値加算
  136.         scr2 += 3;
  137.         if( scr2>=160 ) scr2 -= 60*3;
  138.         // 細い柱スクロール
  139.         sc.BGScroll( 1, scr2, 0 );
  140.     }
  141. }
  142.